import numpy as npimport pandas as pd# Funktionen definieren (Originalfunktion t(x) und deren Ableitung t'(x))def dt(x):# Erste Ableitung von t(x), notwendig zur Bestimmung von Extrempunktenreturn0.15* (3.8/ (2* np.sqrt(x)) -3.2-1.2* x**3)def t(x):# Originalfunktion: beschreibt die halbe Dicke des Flügelprofilsreturn0.15* (3.8* np.sqrt(x) -3.2* x -0.3* x**4)# Anfangsintervall für die Bisektiona, b =0.001, 1.108# Abbruchkriterientol =1e-6max_iter =50# Liste zur Speicherung der Iterationsschrittedata_bisektion = []# Bisection-Verfahren zur Nullstellenbestimmung von dt(x)for i inrange(max_iter): xm = (a + b) /2# Mittelpunkt des aktuellen Intervalls fa = dt(a) # Funktionswert am linken Rand fxm = dt(xm) # Funktionswert am Mittelpunkt# Iterationsdaten speichern: Iteration, Intervallgrenzen, xm, f(xm), Intervallbreite data_bisektion.append([ i,round(a, 6),round(b, 6),round(xm, 6),round(fxm, 6),f"{abs(b - a):.2e}" ])# Abbruchbedingung prüfenifabs(fxm) < tol orabs(b - a) < tol:break# Intervallhalbierung basierend auf Vorzeichenwechselif fa * fxm <0: b = xmelse: a = xm